import pandas as pd

def check_date_series(data,label,point="end"):
    """
    检测日期序列是否为规范的月初或月末格式（如2022-1-1或2022-1-31）
    :param data: 要进行检测的数据DataFrame
    :param label: 要检测的数据列名称
    :param point: 检测月初"start"或月末"end".（默认为月末）
    :return: 不满足要求的数据或空表。
    """
    date_col = data[label]
    date_start = date_col.min()
    date_end = date_col.max()
    date_range_start = pd.date_range(date_start,date_end,freq='MS')
    date_range_end = pd.date_range(date_start,date_end,freq='ME')
    if point == "end":
        check_date_range = date_range_end
    else:
        check_date_range = date_range_start
    not_formated_date = data.loc[~data[label].isin(check_date_range)]
    return not_formated_date

def format_date_series(data,label,point="end"):
    """
    格式化日期序列为规范的月初或月末格式（如2022-1-1或2022-1-31）
    :param data: 要进行格式化的数据DataFrame
    :param label: 要行格式化的数据列名称
    :param point: 格式化月初"start"或月末"end".（默认为月末）
    :return: 格式化后的时间序列
    """
    date_col = data[label]
    not_formated_date = check_date_series(data,label,point)
    used_date_list = not_formated_date[label].unique().tolist()
    for item in used_date_list:
        if not pd.isna(item):
            if point == "end":
                date_point = pd.date_range(item,periods=1,freq='ME')[0]
            else:
                date_point = pd.date_range(item,periods=1,freq='MS')[0]
            date_col = date_col.replace(item,date_point)
    return date_col

#使用方法
#check_date_series(clx_data,"保障日期止",point="end")
#clx_data['保障日期止'] = format_date_series(clx_data,"保障日期止",point="end")